内容管理及关联表格数据
本节通过实操演练,演示如何使用 schema2code 批量生成 uni-CMS 内容管理相关表格的管理页面,涵盖文章表、内容类别表、内容解锁记录表的完整创建流程,以及 Schema 中字段的 title 配置和联合查询的深入理解。
创建 CMS 数据库表
步骤一:在云空间创建 OpenDB 表
进入 HBuilderX 的云空间 → 云数据库 → 点击"+"创建数据库 → 选择 uni-cms 分类:
| 表名 | 说明 |
|---|---|
| uni-cms-articles | 文章表 |
| uni-cms-categories | 内容类别表 |
| uni-cms-unlock-record | 内容解锁记录表 |
选择后点击"创建选中的 OpenDB 表",等待云端创建完成。
步骤二:同步到本地
云端创建完成后,Schema 文件不会自动出现在本地项目中。需要手动同步:
- 找到 HBuilderX 中的
uni-cloud→database目录 - 右键 → 下载所有 DB Schema(含扩展)
- 遇到已存在的 Schema 选择跳过(保留本地版本)
同步完成后,database 目录下会出现对应的 .schema.json 文件。
批量生成管理页面
对三张表分别执行 schema2code:
文章表(uni-cms-articles)
右键 schema → schema2code → 选择 uni-admin → uni-cloud-admin 页面
bash
勾选需要管理的字段(content、like_count、comment_count 等全部勾选)→ 确定 → 注册页面 → 合并。
分类表(uni-cms-categories)
同样的操作流程,生成列表、新增、编辑三个页面。
解锁记录表(uni-cms-unlock-record)
同上,注意此表记录的是用户解锁内容的历史。
注册菜单
在 uni-admin 的菜单管理中,为三张表分别创建子菜单:
内容管理(一级菜单)
├── 文章管理(articles/list)
├── 文章分类管理(categories/list)
└── 存档管理(unlock-record/list)
text
菜单 URL 必须以 / 开头,路径对应 pages.json 中注册的页面路径。
Schema 字段 title 配置
schema2code 生成的页面字段标签来自 Schema 中的 title 属性。如果某些字段缺少 title,管理页面会显示空白或字段名。
修改方式
在 .schema.json 中为字段添加 title:
{
"user_id": {
"bsonType": "string",
"title": "作者",
"description": "文章作者ID"
},
"like_count": {
"bsonType": "int",
"title": "点赞数"
},
"comment_count": {
"bsonType": "int",
"title": "评论数量"
}
}
json
修改完成后重新执行 schema2code,选择合并策略保留之前的调整。
联合查询配置详解
枚举字段与外键关联
category_id 字段通过 enum 配置实现与分类表的联合查询:
{
"category_id": {
"bsonType": "string",
"title": "分类",
"enum": {
"collection": "uni-cms-categories",
"field": "name as text, _id as value",
"foreignKey": "uni-cms-categories._id"
}
}
}
json
配置解析:
| 属性 | 说明 |
|---|---|
collection | 联合查询的目标表 |
field | 查询字段映射:name as text 表示显示名称,_id as value 表示实际值 |
foreignKey | 外键关联:当前表的 category_id 与目标表的 _id 对应 |
实际效果
在管理页面的新增/编辑表单中,category_id 字段会渲染为一个下拉选择器,选项来自 uni-cms-categories 表。选中某个分类后,实际存储的是该分类的 _id。
前端页面的两种做法
| 方式 | 说明 | 适用场景 |
|---|---|---|
| schema2code 生成 | 基于 Schema 自动生成前端列表/详情页面 | 快速原型,需要大量自定义 |
| 手动编写 | 使用 uni-cloud-db 组件手动查询数据 | 需要精确控制页面效果 |
实际开发中推荐先通过 schema2code 生成基础页面,再根据需求手动调整样式和交互。
重新生成的技巧
当修改 Schema 后需要重新生成代码时:
- 右键 Schema → schema2code → 选择对应项目
- 系统会弹出 diff 对比页面
- 查看差异,确认需要保留的修改
- 点击合并,保留手动调整的同时接受新的变更
关键原则:每次修改 Schema 后都要检查生成的 diff,避免覆盖已有调整。
↑